foreground & background

프로세스 & 바이너리
코드 이미지 또는 바이너리: 실행파일(저장매체)
실행중인 프로그램: 프로세스(메모리)-폰 노이만 구조
    가상 메모리 및 물리 메모리 정보
    시스템 리소드 관련 정보
    스케쥴링 단위
        등 바이너리보다 추가적인 정보를 가지고 있음(PCB)
리눅스의 다양한 프로세스 실행 환경
리눅스는 기본적으로 다양한 프로세스가 실행된다.
    유닉스 철학: 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서, 전체 시스템이 동작하도록 하는 모델
foreground process & background process
foreground process: 쉘(shell)에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용자가
                                   다른 입력을 하지 못하는 프로세스(fg)
background process: 사용자 입력과 상관없이 실행되는 프로세스(bg)
    쉘(shell)에서 해당 프로세스 실행시, 맨뒤에 &를 붙여준다.
    ex) $find / —name ‘*.py’ >list.txt &
            [1] 57
            : [1]은 작업 번호(job number), 57은 pid(process ID)를 나타낸다.
foreground process default로 실행됨을 테스트 해보기 위해서 무한루프 코드 작성
$sudo apt-get install gcc
loop.c
#include <stdio.h>
int main(void){
int i=1;
while(i==1){}
return 0
}
$gcc loop.c -o loop
$./loop

loop를 시행하는 동안 어떤 명령도 수행할 수 없다.

$./loop &

[1] 5679


loop를 실행하는 동안 명령을 수행가능(backgroud)에서 멀티 태스킹 수행

$kill 5679